Prime numbers - 3 algorithms

Algorithm 1

import math

def prim_nums_01(max_num):
   nums = [2]
   for a in range(2, max_num):
       is_prime = False
       for i in range(2, a):
           if (a % i == 0):
               is_prime = False
               break
           else:
               is_prime = True
       if is_prime:
           nums.append(a)
   return nums

Algorithm 2

def prim_nums_02(max_num):
   ''' '''
   nums = [2, 3]   # initial list
   a = 5           # first odd number
   c = 2           # depth
   while (c < max_num / 2):
       is_prime = True
       for i in range(2, a):
           if (i <= math.sqrt(a)):
               if (a % i == 0):
                   is_prime = False
               else:
                   pass
       if is_prime:
           nums.append(a)
       c = c + 1
       a = a + 2
   return nums

Algorithm 3

def prim_nums_03(num):
   '''
      >>> list(filter(prim_nums_02, (x for x in range(2, N))))
      [2, 3, 5, 7, 11, 13, 17, 19]
   '''
   is_prime = False
   if num in (1, 2):
       return num
   for i in range(2, num):
       if (num % i == 0):
           is_prime = False
           break
       else:
           is_prime = True
   if is_prime:
       return True
   else:
       return False

Test

def test_prim_numbers(algorithm):

   N = int(input("Enter range: "))

   print("Testing: ", algorithm.__doc__)
   print("testcase #1: ", end="")
   A = [7, 3, 12, 8, 9, 1, 6]
   A_sorted = [1, 3, 6, 7, 8, 9, 12]
   sort_algorithm(A)
   print("Ok" if A == A_sorted else "Fail")


if __name__ == "__main__":
   test_prim_numbers(prim_nums_01)
   test_prim_numbers(prim_nums_02)
   test_prim_numbers(prim_nums_03)

# print("Prime numbers 00: {}".format(prim_nums(N)))
# print("-"*40)
# print("Prime numbers 01: {}".format(prim_nums_01(N)))
# print("-"*40)
# # print("Prime numbers 02: {}".format(prim_nums_02(i) for i in range(2, N)))
# print("Prime numbers 02: {}".format(list(filter(prim_nums_02, (x for x in range(2, N))))))
# # print("Prime numbers 02: {}".format(filter(prim_nums_02, range(2, N))))